{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from scipy.optimize import differential_evolution\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "\n",
    "matplotlib.rcParams['figure.figsize'] = [15, 7]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Домашнее задание \"Теория оптимизации\".\n",
    "\n",
    "### Задание.\n",
    "\n",
    "При фиксированном seed=42 поразбирайтесь и поэкспериментируйте с параметрами алгоритма дифференциальной эволюции: strategy, popsize, tol, mutation, recombination и updating.\n",
    "\n",
    "Постройте графики количества итераций оптимизации функции ackley от значения параметра.\n",
    "\n",
    "Проверим зависимость скорости схождения от типа стратегии."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def ackley(x):\n",
    "    arg1 = -0.2 * np.sqrt(0.5 * (x[0] ** 2 + x[1] ** 2))\n",
    "    arg2 = 0.5 * (np.cos(2. * np.pi * x[0]) + np.cos(2. * np.pi * x[1]))\n",
    "    return -20. * np.exp(arg1) - np.exp(arg2) + 20. + np.e\n",
    "\n",
    "bounds = [(-10, 10), (-10, 10)]\n",
    "\n",
    "strategies = ('best1bin','best1exp','rand1exp','randtobest1exp',\n",
    "                 'currenttobest1exp','best2exp','rand2exp','randtobest1bin',\n",
    "                 'currenttobest1bin','best2bin','rand2bin','rand1bin')\n",
    "\n",
    "diff_result = []\n",
    "for strategy in strategies:\n",
    "    result = differential_evolution(ackley, bounds, seed=42, strategy=strategy)\n",
    "    diff_result.append((result.nit, strategy))\n",
    "\n",
    "sorted_strategy_with_iter = sorted(diff_result, reverse=True)\n",
    "strategies = [strategy for n_iteration, strategy in sorted_strategy_with_iter]\n",
    "n_iterations = [n_iteration for n_iteration, strategy in sorted_strategy_with_iter]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(strategies, n_iterations)\n",
    "plt.xticks(rotation=90)\n",
    "plt.yticks(np.arange(0, 1200, 100))\n",
    "plt.title('Скорость сходимости алгоритма в зависимости от стратегии', pad=30)\n",
    "plt.xlabel('Стратегия')\n",
    "plt.ylabel('Кол-во итераций')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Самая трудозатратная стратегия для тестируемой функции: currenttobest1exp , количество итераций: 1000\n",
      "Самая оптимальная стратегия для тестируемой функции: best1bin , количество итераций: 89\n"
     ]
    }
   ],
   "source": [
    "print(f'Самая трудозатратная стратегия для тестируемой функции:', \n",
    "      sorted_strategy_with_iter[0][1],\n",
    "     ', количество итераций:', sorted_strategy_with_iter[0][0])\n",
    "print(f'Самая оптимальная стратегия для тестируемой функции:', \n",
    "      sorted_strategy_with_iter[-1][1],\n",
    "     ', количество итераций:', sorted_strategy_with_iter[-1][0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Для анализа влияния размера популяции на скорость сходимости выбираем самую оптимальную стратегию: best1bin "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "diff_result = []\n",
    "for popsize in range(5, 100, 5):\n",
    "    result = differential_evolution(ackley, bounds, seed=42, strategy='best1bin', popsize=popsize)\n",
    "    diff_result.append((result.nit, popsize))\n",
    "\n",
    "n_iterations = [n_iteration for n_iteration, popsize in diff_result]\n",
    "popsize = [popsize for n_iteration, popsize in diff_result]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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8qWCTGaZTRwGDAdeMTOAocC/zGwCUAUMi0w7FFjdgbGJiIiIiIjklA579IK7v+buA929zN3LCBK8D7r7e8As4HwzKzSz4cAI4MWOik1ERERERCTXZPLRCw8Ac4GRZlZlZpcmm9bdFwGVwGLgSWCqu9dmKjYREREREZFcl7FmnO4+OcX4sibD04BpmYpHRERERERkf9JhzThFRERERESk4yjZExERERERyUFK9kRERERERHKQkj0REREREZEcpGRPREREREQkBynZExERERERyUFK9kRERERERHKQkj0REREREZEcpGRPREREREQkBynZExERERERyUFK9kRERERERHJQxpI9M5thZuvMbGGk7Htm9qqZvWxmT5nZ4Mi4a81sqZktMbPTMhWXiIiIiIjI/iCTNXv3AKc3Kfuhux/p7kcDjwHfBTCz0cD5wJjwM3eZWX4GYxMREREREclpGUv23P05YFOTsq2RwZ6Ah+8nAQ+6e427LwOWAhMyFZuIiIiIiEiuM3dPPVVbZ25WBjzm7mMjZdOAzwNbgAp3X29mdwDz3H1mOM104Al3/12CeU4BpgCUlJSMq6yszFj8camurqa4uLizw0gpW+KE7IlVccZLccZLccZLccZLccZLccZLccZLcbZPRUXFAncfn3Cku2fsBZQBC5OMuxa4MXx/J3BhZNx04JxU8y8vL/dsMHv27M4OIS3ZEqd79sSqOOOlOOOlOOOlOOOlOOOlOOOlOOOlONsHmO9J8qXO7I3zfuCc8H0VMCwybiiwusMjEhERERERyREdmuyZ2YjI4NnAG+H7WcD5ZlZoZsOBEcCLHRmbiIiIiIhILinI1IzN7AFgIjDAzKqA64GPm9lIoA5YAXwJwN0XmVklsBjYC0x199pMxSYiIiIiIpLrMpbsufvkBMXTW5h+GjAtU/GIiIiIiIjsTzrznj0RERERERHJECV7IiIiIiIiOUjJnoiIiIiISA5SsiciIiIiIpKDlOyJiIiIiIjkICV7IiIiIiIiOUjJnoiIiIiISA5SsiciIiIiIpKDlOyJiIiIiIjkICV7IiIiIiIiOUjJnoiIiIiISA7KWLJnZjPMbJ2ZLYyU/dDM3jCzV83sj2Z2YGTctWa21MyWmNlpmYpLRERERERkf5DJmr17gNOblD0NjHX3I4E3gWsBzGw0cD4wJvzMXWaWn8HYRERE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\n",
      "text/plain": [
       "<Figure size 1080x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(popsize, n_iterations)\n",
    "plt.plot(popsize, n_iterations, 'ro')\n",
    "plt.title('Скорость сходимости алгоритма в зависимости от размера популяции', pad=20)\n",
    "plt.yticks(np.arange(0, 200, 10))\n",
    "plt.xticks(np.arange(0, 100, 5))\n",
    "plt.xlabel('Размер популяции')\n",
    "plt.ylabel('Кол-во итераций')\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Из произведенного анализа зависимость скорости сходимости от размера популяции очень маленькая.\n",
    "\n",
    "Проверим влияние на скорость сходимости параметра мутации. Исходя из документации увеличение размера мутации приводит к увеличению радиуска поиска и времени сходимости. При этом размер мутации можно задать как постоянным числом, так и промежутком, из которого значение будет выбрано случайным образом в каждой итерации.\n",
    "\n",
    "Уровень мутации можно задать числом от [0, 2]\n",
    "\n",
    "Попробуем сравнить между собой 2 варианта:\n",
    "- размер мутации постоянный, увеличивается от 0.1 до 2 с шагом 0.1\n",
    "- размер мутации случайный из диапазона от 0.1 до N, N увеличивается до 2 с шагом 0.1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "diff_result_met1 = []\n",
    "diff_result_met2 = []\n",
    "\n",
    "for mutation in np.arange(0.1, 2, 0.1):\n",
    "    \n",
    "    result = differential_evolution(ackley, bounds, seed=42, strategy='best1bin', mutation=mutation)\n",
    "    diff_result_met1.append((result.nit, mutation))\n",
    "    \n",
    "    result = differential_evolution(ackley, bounds, seed=42, strategy='best1bin', mutation=[0.1, mutation])\n",
    "    diff_result_met2.append((result.nit, mutation))\n",
    "\n",
    "n_iterations_met1 = [n_iteration for n_iteration, popsize in diff_result_met1]\n",
    "n_iterations_met2 = [n_iteration for n_iteration, popsize in diff_result_met2]\n",
    "mutations_met1 = [popsize for n_iteration, popsize in diff_result_met1]\n",
    "mutations_met2 = [popsize for n_iteration, popsize in diff_result_met2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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V155hauvvjpn+DXXXMN//vMfgCPG5Wfp0qX06tWL9u3bM2nSJJYtW1bkurP9/e9/55577sl5Xdg+EhERERGJJlHdsnc8LXAl5Vhuhe+cy3d4mzZtuPTSS6lduzZNmzbNVZD16tWLqVOnAl43zvT09JxxkyZNonPnzuzdu5d69erlDNu2bRuLFi0iLi6OJk2akJGRQd26dXnwwQdp1qwZiYmJrF69usCcQ4cO5aabbmLPnj1cfvnlvPnmmwA0atSIOnXqMH36dL799lsmTZpU6PYOGzaM999/n44dO/Laa68xc+bMYu2nlJQUli5dyrPPPlusfSQiIiIiEk3UslfCunfvzltvvQV4BVXPnj0B6N+/Py+88AIAmZmZ7NlTcPfTM844g8mTJ5OZmcm2bdv45ptvOO200wCoUqUKt912G4sXL6Z8+fLHnHP37t3Url2buLg4ZsyYQWpqas642rVrM2DAAJYsWUKzZs0KXEadOnWoVq0al1xyyRHjrrvuOoYMGcKll15a5HVz2UXooUOHiiwMA40ePZrRo0cfMTxY+0hEREREpDRTsVfCnnnmGV599VU6dOjAxIkTefrppwF4+umnmTFjBu3bt+fUU08ttKviwIED6dChAx07dqRfv3489thj1K1bl7lz5/L555/n3HzleAwePJiFCxfSuXNnJk2aRKtWrQBITk5m3LhxvPjii8Vazvjx4xk+fPgRwy+88ELS09OL7MIJXlfMrl27ctZZZ+XkyHbffffRs2dPevbsydq1a/nTn/6UM65hw4acccYZuaYP5j4SERERESnNorobZ7gEdpEEr3CqVKkSAE2aNGH69OlHzFOnTp1cd7wMlLcwMTMef/xxHn/88VzDu3fvzmeffXZEjj59+tCnT5+c4dk3egGO6BKZPU/NmjWZN29evnkChxf0SIm8+6Bz58651rVkyRI6dux4RPGW37w33nhjzvWM2fbu3ctrr712xLzZ21nQdhW0j0REREREoo2KPSlxY8eO5YUXXjiqLpnFde211wZ9mSIiIiIikUjdOKXEjRgxgtTU1JzrFYNp6NChQV+miIiIiEgkUrEnIiIiIiIShVTsiYiIiIiIRCEVeyIiIiIiIlFIxZ6IiIiIiEgUUrEXAps3b+byyy+nWbNmtGnThkGDBrFy5coSW/+VV15J586ddbOSENuxYwdnnXUWLVq04KyzzmLnzp35TnfNNddQu3Zt2rVrF7Iso0aNokKFCmzdujVnWEJCQsjWJyIiIiKln4q9IHPOMXDgQPr06cPq1atZvnw5DzzwAFu2bCmxDP/5z39YuHAhEydOLLF1nojGjh1L//79WbVqFf3792fs2LH5Tjds2DA+/fTTkOepWbMmTzzxRMjXIyIiIiKRQcVekM2YMYO4uDhuuOGGnGEdOnSgV69egPew7ypVqpCUlETdunUZN24cX331FQMHDsyZ/osvvuDiiy8mJSUlV2tQnz59WLhwIeA9aLxz5860bduWBx54IGeaJk2akJaWBsCQIUNy5n/ttde45ZZbcqa75ZZbch5K/uCDD9KlSxe6du3K8OHDcc4BsGDBAjp27EhSUhINGjQ44uHu4BUyDRs2JDMzE4AXXngBMyMlJYX77ruPp59+OmfakSNH8swzzzB48GCSkpKoXr06J510EklJSbz44oukpKTQq1cvOnXqRKdOnZg7d27OPhswYEDOcsaNG8fDDz98xHatWLGCMmXK8M477wAwbdo02rZtS1JSErVq1cr3IeyLFy+mW7dudOjQgYEDB7Jz505mzZpFUlISbdq0oXz58iQlJZGUlHTEvB988AFXXXUVAFdddRXvv//+EdMAnHHGGVSvXj3fcYFuueUWEhMTSUpKIiEhIedvnV/G/FxzzTVMnjyZHTt2FLkuEREREYl+0f1Q9U9GwOafgrvMuu3h3PxbcACWLl3KqaeeWuD4zMxMevfuzYcffphTPPXr14+bb76Zbdu2UatWLV599VWuvvpqYmJicgqvvMaMGUP16tXJzMykf//+/Pjjj3To0CFn/E8//cTSpUuLtUm33HIL999/P3v37uWmm25i6tSpXHDBBTz66KPcd999/OEPf2DcuHGkp6fnO3+DBg347LPPOO+88/jggw9o3rw54D3g/OKLL+a2224jKyuLt956iwULFnDrrbcCXqE4YMAA/vCHPwCwb98+vvjiC+Lj41m1ahVXXHFFTsFTHPfddx+tWrXKeX3//fczYcIEOnfunKvQDXTllVfy7LPP0rt3b+6//35Gjx7NU089xeLFi0lJSWHAgAEsXrw433m3bNlCvXr1AKhXr16uLpTHIjMzk4ceeogrr7ySPn36FJkxr4SEBK655hqefvppRo8efVxZRERERCTyqWWvhO3fv5/4+Phcw8yMoUOH8vrrr7Nr1y7mzZvHueeeS61atdi8eXO+LTVTpkyhU6dOnHLKKSxbtozly5fnGn/vvfceccI/efLknFaqyZMn5wyfMWMGXbt2pVu3bkyfPp1ly5YBEBsby969e4vcpqFDhzJx4kSWLl1KixYtKFeuHOC1MtaoUYMffviBzz//nFNOOYUaNWoUuJxDhw5x/fXX0759ey655JIjtqkwixYtIisri86dO+cMKyr/7t272bVrF7179wa81rlvvvmm2OsMtvT09CNaAI8246233sqECRPYs2dPSLOKiIiISOkX3S17hbTAhUrbtm1zuhHmZ9OmTdSvX/+I4VdffTUXXHAB8fHxXHLJJZQpU4YyZcrw4IMP0qtXL+Li4khOTgZg7dq1jBs3ju+++45q1aoxbNgwMjIycpY1d+5cEhIS6NixY651XHbZZTz33HMAOS1dGRkZ3HTTTSxcuJCqVavyxBNP5Cxr1KhRXHLJJYwZM4b9+/dz/fXX57tNdevW5dChQzz++OPcdtttzJgxI2fcddddx2uvvcbmzZu55pprCt13Tz75JHXq1GHJkiVkZWUdURQX5t577+Uf//gHjz76aM6wJ554gqFDhxIfH8/27dtzFYLBUKdOHX799Vfq1avHr7/+Su3atY9reWvXrqVhw4bHtYyqVavyxz/+keeff/64liMiIiIikU8te0HWr18/Dhw4wEsvvZQzbNGiRXz99ddkZmby3//+lx49ehwxX/369alfvz4PPfQQw4YNyxl+8803s2zZMhYvXpxTrOzZs4eKFStSpUoVtmzZwieffJJrWaNGjeLBBx8sVt7swq5mzZqkp6fnKlTr1q1LQkIC33zzDX/+858LXc7VV1/N1q1b6dSpU67hAwcO5NNPP+W7777j7LPPLnQZu3fvpl69esTExDBx4sSc6wCL8vXXX1OvXj1at26da3iDBg2oV68eCxcu5LLLLjtivipVqlCtWjVmzZoFwMSJE3Na0IrjwgsvZMKECQBMmDCBiy66qNjz5pWamsqvv/56RIF+LBnvuOMO/vWvf3H48OFjziMiIiIikS+6W/bCwMx47733uP322xk7dizx8fE0bNiQ5557jqFDh9KiRQsGDRqU77yDBw9m27ZttGnTptB1dOzYkVNOOYW2bdvStGnTI4rHrl270qxZM1JSUorMW7Vq1Zyuk40aNaJLly6Ad1fRYcOG8fDDD+fbEpnX+eefz/nnn3/E8LJly9K3b1+qVq1KbGxsocu46aabGDRoEG+//TZ9+/alYsWKOePmzp1Lz549Adi4cSOHDx/m0ksvBWDVqlVMmzYt17IOHDjAVVddxfjx4wt9BMGECRO44YYb2LdvH02bNuXVV18tcluzjRgxgksvvZSXX36ZxMRE3n77bcBrvb3uuuv4+OOPAbjiiiuYOXMmaWlpNGzYkNGjR3PttdfmWlaXLl04ePAgp5xyCgDJycnceeedzJgx46gz1qxZk4EDB/Lkk08We1tEREREJAo55+rnX4YAACAASURBVCL2p2XLli6v5cuXHzEs3Pbs2VOs6W6++WY3fvz4EKcpWHFzHo3MzEzXsWNHt3LlyqAud8SIEW7GjBlBXWYoFHef9u7d+4hhgwYNCnIaT37vkUjYl84pZ7ApZ3ApZ3ApZ3ApZ3ApZ3Ap5/EBFroC6iV14ywlTj31VH788UeGDBkS7ihBs3z5cpo3b07//v1p0aJFUJfdu3dvTjrppKAuM5zuv//+I4YV1XVWRERERKQw6sZZSixatCjcEYKuTZs2rFmzJiTL7tGjB5UqVQrJssOhX79+RwzL79pOEREREZHiisqWPVfAs+lETnR6b4iIiIicOKKu2Mu+zb5OakVyc86xffv2o3qkhYiIiIhErpB34zSzWGAhsNE5N8DMqgOTgSZACnCpc26nP+3dwLVAJnCrc+6zo11fw4YN2bBhA9u2bQvSFhy/jIyMiDjBjpScEDlZS1vO7LvDioiIiEj0K4lr9m4DfgYq+69HAF8558aa2Qj/9V1m1ga4HGgL1Ae+NLOWzrniPWzNFxcXV+pu3DFz5sycW+qXZpGSEyIna6TkFBEREZHoE9JunGbWEDgfGB8w+CJggv/7BOD3AcPfcs4dcM6tBZKB00KZT0REREREJFpZKK9tM7N3gEeASsBf/W6cu5xzVQOm2emcq2ZmzwHznXOv+8NfBj5xzr2TZ5nDgeEAtWrVOnXKlCkhyx8s6enphT7Yu7SIlJwQOVmVM7iUM7iUM7iUM7iUM7iUM7iUM7iU8/j07dt3kXOuc74jC3oA3/H+AAOA5/3f+wBT/d935Zlup//vP4EhAcNfBgYVto78HqpeGpXWBzDmFSk5nYucrMoZXMoZXMoZXMoZXMoZXMoZXMoZXMp5fCjkoeqhvGavB3ChmZ0HxAOVzex1YIuZ1XPO/Wpm9YCt/vQbgEYB8zcENoUwn4iIiIiISNQK2TV7zrm7nXMNnXNN8G68Mt05NwT4ELjKn+wq4AP/9w+By82snJmdBLQAFoQqn4iIiIiISDQribtx5jUWmGJm1wLrgEsAnHPLzGwKsBw4DNzsjvJOnCIiIiIiIuIpkWLPOTcTmOn/vh3oX8B0Y4AxJZFJREREREQkmoX00QsiIiIiIiISHir2REREREREopCKPRERERERkSikYk9ERERERCQKqdgTERERERGJQir2REREREREopCKPRERERERkSikYk9ERERERCQKqdgTERERERGJQir2REREREREopCKPRERERERkSikYk9ERERERCQKqdgTERERERGJQir2REREREREopCKPRERERERkSikYk9ERERERCQKqdgTEREREYkmkyZBkyb07tcPmjTxXssJqUy4A4iIiIiISJBMmgTDh8O+fRhAaqr3GmDw4HAmkzBQy56IiIiISLQYORL27cs9bN8+b7iccFTsiYiIiIhEi3Xrjm64RDUVeyIiIiIi0SIx8eiGS1RTsSciIiIiEi3GjCGrfPlcgw6UjYcxY8IUSMJJxZ6IiIiISLQYPJj5I8ayoXItnBl7atfnzt/dzPzTzwl3MgkDFXsiIiIiIlFkUvOeDLrrDWZ+9RVlN6xjUY/zeGjacrKyXLijSQlTsSciIiIiEiWyshxzk9Po0bwmZkZ8XCx3nn0ySzfu4f3FG8MdT0qYij0RERERkSjx8+Y97Nx3iB7NauYMu7BjfTo0rMLjn60g41BmGNNJSVOxJyIiIiISJeYkpwHQo/n/ir2YGGPkea35dXcGL89eG65oEgYq9kREREREosTs5O00r51A3SrxuYZ3bVqD37Wpw/Mzktm290CY0klJU7EnIiIiIhIFDhzOZMHa7fQMaNULNOLcVhw4nMWTX64s4WQSLir2RERERESiwA/rdpFxKIvuzWrkO75prQSGdGvMWwvWsXLL3hJOJ+GgYk9EREREJArMSU4jxqBbAcUewG39W1CxXBke+fjnEkwm4aJiT0REREQkCsxOTqNjo6pUjo8rcJpqFcvyp37NmbFiG7NXpZVgOgmHkBV7ZhZvZgvMbImZLTOz0f7wUWa20cwW+z/nBcxzt5klm9kKMzs7VNlERERE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\n",
      "text/plain": [
       "<Figure size 1080x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(mutations_met1, n_iterations_met1, label='Постоянная мутация')\n",
    "plt.plot(mutations_met1, n_iterations_met1, 'ro')\n",
    "plt.plot(mutations_met2, n_iterations_met2, label='Случайная мутация от 0.1 до N')\n",
    "plt.plot(mutations_met2, n_iterations_met2, 'ro')\n",
    "\n",
    "plt.title('Скорость сходимости алгоритма в зависимости от размера мутации', pad=20)\n",
    "plt.yticks(np.arange(0, 500, 50))\n",
    "plt.xticks(np.arange(0, 2, 0.1))\n",
    "plt.xlabel('Размер мутации')\n",
    "plt.ylabel('Кол-во итераций')\n",
    "plt.legend(loc='upper left')\n",
    "plt.grid()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Как видно из полученных данных в случае постоянного значения мутации скорость сходимости значительно увеличивается при увеличении значения мутации. В случае со случайным выбором значения мутации из промежутка от 0.1 до N, скорость сходимости также увеличивается, но уже не так сильно.\n",
    "\n",
    "Проверим как влияет на количество итераций параметр tol."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "diff_result = []\n",
    "\n",
    "for tol in np.arange(0.001, 1, 0.005):\n",
    "    \n",
    "    result = differential_evolution(ackley, bounds, seed=42, strategy='best1bin', tol=tol)\n",
    "    diff_result.append((result.nit, tol))\n",
    "\n",
    "n_iterations = [n_iteration for n_iteration, tol in diff_result]\n",
    "tols = [tol for n_iteration, tol in diff_result]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(tols, n_iterations, label='Постоянная мутация')\n",
    "plt.title('Скорость сходимости алгоритма в зависимости от переменной tol', pad=20)\n",
    "plt.xlabel('tol')\n",
    "plt.ylabel('Кол-во итераций')\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Как видно по графику параметр tol не влияет на количество итераций, но выше определенного значения количество итераций становится равным 1. Вероятно при этих значениях функция начинает давать некорректный результат по искомому минимуму.\n",
    "\n",
    "Проверим как влияет параметр recombination на скорость сходимости. Этот параметр описывает вероятность замещения координаты изначального вектора на скрещенную координату. Чем выше значение вероятности, тем больше скрещенных координат попадет в исходный вектор. По документации, высокие значения могут дестабилизировать следующую популяцию."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "diff_result = []\n",
    "for recombination in np.arange(0.05, 1, 0.05):\n",
    "    result = differential_evolution(ackley, bounds, seed=42, strategy='best1bin', recombination=recombination)\n",
    "    diff_result.append((result.nit, recombination))\n",
    "\n",
    "n_iterations = [n_iteration for n_iteration, popsize in diff_result]\n",
    "recombinations = [popsize for n_iteration, popsize in diff_result]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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tr5t9+vXz1uCCRMmJDuEmLSUON1bTqyKM74UZ3wpzvhSnPGlOONLccaX4owvxblrgGleR76U0NTUzDKBp4Cx7v50RPn5wMlAWRgg7r7J3VeGz98HZgP9EhmfiIiIiIhIqkpkb5wGjAG+cPfbIsqPB64GTnX3iojyIjNLD5/3BvoCcxIVn4iIiIiISCpL5D17hwPnAZ+a2Udh2W+AvxA02Rwf5INMcfdLgSOA35vZVqASuNTdVyUwPhERERERkZSVsGTP3ScDFmXWi3Us/xRBk08RERERERHZRc2vOxkRERERERHZZUr2REREREREUpCSPRERERERkRSkZE9ERERERCQFKdkTERERERFJQUr2REREREREUpCSPRERERERkRSkZE9ERERERCQFKdkTERERERFJQUr2REREREREUpCSPRERERERkRSkZE9ERERERCQFKdkTERERERFJQUr2REREREREUpCSPRERERERkRSkZE9ERERERCQFKdkTERERERFJQUr2REREREREUpCSPRERERERkRSkZE9ERERERCQFKdkTERERERFJQUr2REREREREUpCSPRERERERkRSkZE9ERERERCQFKdkTERERERFJQUr2REREREREUpCSPRERERERkRSkZE9ERERERCQFKdkTERERERFJQUr2REREREREUpCSvUQaOxZKSxl21FFQWhpMi4iIiIiINIGMZAeQssaOhZEjoaICA5g3L5gGKCtLZmQiIiIiItIKqGYvUUaNgoqKmmUVFUG5iIiIiIhIgiUs2TOzHmY2wcy+MLPPzOzysLyDmY03s6/Cv+0j1rnWzGaZ2QwzOy5RsTWJ+fMbVy4iIiIiIhJHiazZ2wr80t33BA4BfmpmewHXAK+5e1/gtXCacN45wN7A8cA9ZpaewPgSq6SkceUiIiIiIiJxlLBkz92/cfcPwufrgC+AbsBpwN/Dxf4OfDd8fhrwhLtvcvevgVnA4ETFl3CjR0NeXo2iytzcoFxERERERCTBmuSePTMrBfYH3gU6u/s3ECSEQHG4WDdgQcRqC8OylqmsDO6/H3r2xM1YXFjMQ+dfq85ZRERERESkSZi7J3YHZgXAJGC0uz9tZmvcvV3E/NXu3t7M7gbecfdHw/IxwIvu/lSt7Y0ERgIUFRUNGjduXELjj4fy8nJeXpzFC3O2cPMRuRTnNc9+ccrL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\n",
      "text/plain": [
       "<Figure size 1080x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(recombinations, n_iterations, label='Постоянная мутация')\n",
    "plt.plot(recombinations, n_iterations, 'ro')\n",
    "\n",
    "plt.title('Скорость сходимости алгоритма в зависимости от вероятности скрещивания', pad=20)\n",
    "plt.yticks(np.arange(0, 250, 25))\n",
    "plt.xticks(np.arange(0, 1, 0.05))\n",
    "plt.xlabel('Вероятность скрещивания координаты (recombination)')\n",
    "plt.ylabel('Кол-во итераций')\n",
    "plt.grid()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Как видно из графика, оптимальное значение лежит в пределах от 0.65 до 0.80, так как на этом участке скорость сходимости почти перестает изменяться.\n",
    "\n",
    "Проверим зависимость скорости сходимости алгоритма от метода обновления наилучшего вектора."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "updating_params = ('immediate', 'deferred')\n",
    "\n",
    "diff_result = []\n",
    "for updating in updating_params:\n",
    "    result = differential_evolution(ackley, bounds, seed=42, strategy='best1bin', updating=updating)\n",
    "    diff_result.append(result.nit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(updating_params, diff_result)\n",
    "plt.yticks(np.arange(0, 150, 10))\n",
    "plt.title('Скорость сходимости алгоритма в зависимости от метода обновления наилучшего вектора', pad=30)\n",
    "plt.xlabel('Стратегия')\n",
    "plt.ylabel('Кол-во итераций')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Как видно из полученых графиков наш алгоритм быстрее сходится при постоянном обновлении наилучшего вектора в популяции, а не в случае разового обновления в одной итерации.\n",
    "\n",
    "Исходя из полученных данных попробуем подобрать оптимальные параметры для наискорейшего схождения нашего алгоритма.\n",
    "\n",
    "Для подбора параметров будем руководствоваться следующими соображениями:\n",
    "- минимум функции достигается в точке (0,0)\n",
    "- подобранные параметры функции должны выдать наименьшее количество итераций и должна быть найдена точная координата минимума"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "     fun: 4.440892098500626e-16\n",
       " message: 'Optimization terminated successfully.'\n",
       "    nfev: 4053\n",
       "     nit: 20\n",
       " success: True\n",
       "       x: array([0., 0.])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bounds = [(-10, 10), (-10, 10)]\n",
    "differential_evolution(ackley, bounds, seed=42, \n",
    "                       strategy='best1bin',\n",
    "                       popsize=95,\n",
    "                       tol=0.01,\n",
    "                       mutation=0.1,\n",
    "                       recombination=0.76,\n",
    "                       updating='immediate')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
